/* Pontificia Universidad Javeriana - Facultad de Ingenier�a   */
/* Proyecto Arquitectura SMA - Plataforma BESA - 2002          */
package sample.test.agentodo;


import sample.test.agentodo.CounterOdo;
import java.io.Serializable;
import java.util.ArrayList;
import BESA.Agent.StateBESA;
import BESA.SystemLevel.transactions.agent.TransactionalState;

public class StateOdo extends TransactionalState {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	// Atributos
	private int step; // Init en el metodo initState usando el profile
    private CounterOdo counter; // Init en la constructora del estado
    private int reqControl; // Init en el comportamiento que maneja la guarda Odo_Request
    
	public StateOdo(int initCounter) {
        super();
        counter = new CounterOdo(initCounter, this);
    }

    public void initState(ArrayList profile) {
    	step = ((Integer)profile.get(0)).intValue();
	}
    
    public synchronized int getStep() {
        return step;
    }

    public synchronized void setStep(int step) {
        this.step = step;
    }

    public synchronized CounterOdo getCounter() {
        return counter;
    }

    public synchronized int getReqControl() {
        return reqControl;
    }

    public synchronized void setReqControl(int reqControl) {
        this.reqControl = reqControl;
    }

    public synchronized void incrementCounter() {
        counter.addValue(step);
	  System.out.println("El step esta en:" + step);
    }

    public synchronized void decrementCounter() {
        counter.addValue(-1 * step);
	  System.out.println("El step esta en:" + step);
    }

    public synchronized void incrementReqControl() {
        reqControl++;
    }
    
    public TransactionalState copy(){
    	StateOdo newOne =new StateOdo(this.getCounter().getValue());
    	return newOne;
    }
    
}
